//: initialization/Demotion.java
// Demotion of primitives and overloading.
package initialization;

import static net.mindview.util.Print.*;

public class Demotion
{
    void f1(char x)
    {
        print("f1(char)");
    }
    
    void f1(byte x)
    {
        print("f1(byte)");
    }
    
    void f1(short x)
    {
        print("f1(short)");
    }
    
    void f1(int x)
    {
        print("f1(int)");
    }
    
    void f1(long x)
    {
        print("f1(long)");
    }
    
    void f1(float x)
    {
        print("f1(float)");
    }
    
    void f1(double x)
    {
        print("f1(double)");
    }
    
    void f2(char x)
    {
        print("f2(char)");
    }
    
    void f2(byte x)
    {
        print("f2(byte)");
    }
    
    void f2(short x)
    {
        print("f2(short)");
    }
    
    void f2(int x)
    {
        print("f2(int)");
    }
    
    void f2(long x)
    {
        print("f2(long)");
    }
    
    void f2(float x)
    {
        print("f2(float)");
    }
    
    void f3(char x)
    {
        print("f3(char)");
    }
    
    void f3(byte x)
    {
        print("f3(byte)");
    }
    
    void f3(short x)
    {
        print("f3(short)");
    }
    
    void f3(int x)
    {
        print("f3(int)");
    }
    
    void f3(long x)
    {
        print("f3(long)");
    }
    
    void f4(char x)
    {
        print("f4(char)");
    }
    
    void f4(byte x)
    {
        print("f4(byte)");
    }
    
    void f4(short x)
    {
        print("f4(short)");
    }
    
    void f4(int x)
    {
        print("f4(int)");
    }
    
    void f5(char x)
    {
        print("f5(char)");
    }
    
    void f5(byte x)
    {
        print("f5(byte)");
    }
    
    void f5(short x)
    {
        print("f5(short)");
    }
    
    void f6(char x)
    {
        print("f6(char)");
    }
    
    void f6(byte x)
    {
        print("f6(byte)");
    }
    
    void f7(char x)
    {
        print("f7(char)");
    }
    
    void testDouble()
    {
        double x = 0;
        print("double argument:");
        f1(x);
        f2((float)x);
        f3((long)x);
        f4((int)x);
        f5((short)x);
        f6((byte)x);
        f7((char)x);
    }
    
    public static void main(String[] args)
    {
        Demotion p = new Demotion();
        p.testDouble();
    }
} /*
   * Output: double argument: f1(double) f2(float) f3(long) f4(int) f5(short) f6(byte) f7(char)
   */// :~
